package com.briup.day07;

/**
 * @author 谭梦寻
 * @version 1.1
 */
public class TestTeacher{
    public static void main(String[] args) {
/*
        1 对Teacher类进行加载
            类的信息存放方法区（内存空间）
        2 为类中静态属性赋值 初始值为默认值 执行静态代码块
        3 创建main的栈空间，保存局部变量
        4 创建堆空间 保存新建的Teacher对象
        5 对对象中非静态属性进行赋值操作(id=0,name=null)
        6 对非静态的属性 进行显示初始化（赋值）
        7 执行非静态代码块 由位置决定 -- 谁在前面谁先执行
        8 执行构造方法
        9 将对象的地址值赋值给局部变量 teacher
*/
/*
    执行顺序：
       先静态后动态
       先代码块 后构造器
       先默认赋值 后显式赋值
       属性显式赋值和代码顺序由位置决定
*/
        Teacher teacher = new Teacher();
    }
}

class Teacher {
    //    属性
    private int id;
    private String name;
    private double salary;
    //    静态属性
    private static String school;

    //    代码块
    static {
//    静态代码块
        school = "希望小学";
        System.out.println(school);//输出 希望小学
    }

    {
//       非静态代码块
        this.salary = 3000;
    }

    public Teacher() {
    }

    public Teacher(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public static String getSchool() {
        return school;
    }

    public static void setSchool(String school) {
        Teacher.school = school;
    }
}



